#include "log.h"
#include <ctime>
#include <fstream>
#include <cstdarg> // 包含cstdarg头文件
#include "ParamProcessing.h"

void logMessage(const std::string &message, ...)
{
    // 获取当前时间
    std::time_t currentTime = std::time(nullptr);
    std::tm *localTime = std::localtime(&currentTime);

    // 构造时间字符串
    char timeString[100];
    std::strftime(timeString, sizeof(timeString), "[%Y-%m-%d %H:%M:%S]", localTime);

    // 打开日志文件
    std::ofstream logfile(LogFilePath, std::ios::app);

    // 检查文件是否成功打开
    if (!logfile.is_open())
    {
        std::cerr << "Error opening log file!" << std::endl;
        return;
    }

    // 写入时间戳
    logfile << timeString << " ";

    // 使用可变参数模板处理参数列表
    va_list args;
    va_start(args, message);
    for (auto it = message.begin(); it != message.end(); ++it)
    {
        if (*it == '%' && *(it + 1) == 's')
        {
            const char *arg = va_arg(args, const char *);
            logfile << arg;
            it++; // 跳过 's'
        }
        else
        {
            logfile << *it;
        }
    }
    va_end(args);

    // 写入换行符
    logfile << std::endl;

    // 关闭日志文件
    logfile.close();
}
